package com.ruoyi.controller;

import com.ruoyi.common.Result;
import com.ruoyi.entity.Keywords;
import com.ruoyi.service.KeywordService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
 * 关键词控制器
 * 处理关键词相关的HTTP请求
 *
 * @author ruoyi
 */
@Api(tags = "关键词管理接口")
@RestController
@RequestMapping("/api/keywords")
public class KeywordController {

    @Autowired
    private KeywordService keywordService;

    /**
     * 获取所有启用的关键词列表
     *
     * @return 关键词列表
     */
    @ApiOperation("获取启用的关键词列表")
    @GetMapping("/list")
    public Result<List<Keywords>> listEnabledKeywords() {
        List<Keywords> keywords = keywordService.listEnabledKeywords();
        return Result.success(keywords);
    }

    /**
     * 根据分类获取启用的关键词列表
     *
     * @param category 关键词分类
     * @return 关键词列表
     */
    @ApiOperation("根据分类获取关键词列表")
    @GetMapping("/list/{category}")
    public Result<List<Keywords>> listKeywordsByCategory(@ApiParam("关键词分类") @PathVariable String category) {
        List<Keywords> keywords = keywordService.listKeywordsByCategory(category);
        return Result.success(keywords);
    }

    /**
     * 根据ID获取关键词详情
     *
     * @param id 关键词ID
     * @return 关键词详情
     */
    @ApiOperation("获取关键词详情")
    @GetMapping("/{id}")
    public Result<Keywords> getKeywordById(@ApiParam("关键词ID") @PathVariable Integer id) {
        Keywords keywords = keywordService.getKeywordById(id);
        return Result.success(keywords);
    }

    /**
     * 创建关键词
     *
     * @param keywords 关键词信息
     * @return 创建结果
     */
    @ApiOperation("创建关键词")
    @PostMapping
    public Result<Boolean> createKeyword(@ApiParam("关键词信息") @RequestBody Keywords keywords) {
        boolean success = keywordService.createKeyword(keywords);
        return Result.success(success);
    }

    /**
     * 更新关键词
     *
     * @param id 关键词ID
     * @param keywords 关键词信息
     * @return 更新结果
     */
    @ApiOperation("更新关键词")
    @PutMapping("/{id}")
    public Result<Boolean> updateKeyword(
            @ApiParam("关键词ID") @PathVariable Integer id,
            @ApiParam("关键词信息") @RequestBody Keywords keywords) {
        keywords.setId(id);
        boolean success = keywordService.updateKeyword(keywords);
        return Result.success(success);
    }

    /**
     * 删除关键词
     *
     * @param id 关键词ID
     * @return 删除结果
     */
    @ApiOperation("删除关键词")
    @DeleteMapping("/{id}")
    public Result<Boolean> deleteKeyword(@ApiParam("关键词ID") @PathVariable Integer id) {
        boolean success = keywordService.deleteKeyword(id);
        return Result.success(success);
    }

    /**
     * 启用/禁用关键词
     *
     * @param id 关键词ID
     * @param status 是否启用
     * @return 操作结果
     */
    @ApiOperation("启用/禁用关键词")
    @PutMapping("/{id}/status")
    public Result<Boolean> updateKeywordStatus(
            @ApiParam("关键词ID") @PathVariable Integer id,
            @ApiParam("是否启用") @RequestParam Boolean status) {
        boolean success = keywordService.updateKeywordStatus(id, status);
        return Result.success(success);
    }
}
